Zero-Knowledge Proofs For Set Membership: Efficient, Succinct, Modular